The present invention relates to systems and method for rendering images, and more particularly to systems and methods for rendering volumetric shadows in images.
A volumetric shadow is defined as the amount of light reaching any particular point in a scene along a ray of light traced between a light source and the particular point. Scattering effects may be ignored, thereby allowing an assumption that the light ray travels inside a translucent volume along a straight line. Thus, each fragment (e.g., a geometric primitive) that intersects the light ray attenuates the current light visibility by the transmittance T of the primitive, where T=(1−α) and α represents the primitive's opacity.
Several techniques for rendering volumetric shadows are known. Deep Shadow Mapping (T. Lokovic and E. Veach, “Deep Shadow Maps,” in Proceedings of the 27th Annual Conference on Computer Graphcs and Interactive Techniques pgs. 385-392, 2000) represents a known technique in which all shadow-casting primitives (opaque and translucent) are captured using a linked list per pixel of arbitrary size. A disadvantage of this technique is the unbounded amount of memory needed for capturing the shadow-casting primitives, as well as the pre-filtering operations needed for the Deep Shadow Map, thus real-time processing cannot be guaranteed.
For real-time rendering, an approximation of Deep Shadow Mapping, referred to as Opacity Shadow Mapping, has been proposed based on the idea of discretizing the transmittance function of the primitives along light rays using predefined depth buckets (e.g., T. Kim and U. Neumann, “Opacity Shadow Maps,” in Proceedings of the 12th Eurographics Workshop on Rendering Techniques, Jun. 25-27, 2001, pgs. 177-182). The buckets have a fixed memory cost and thus can run in real time. However, discretizing the transmittance function of the primitives into depth buckets causes discontinuities in the rendered shadows along the z-axis of the shadow map frustum. The challenge with this approach is how to limit undersampling artifacts when the density of depth buckets per light ray is not large enough to capture the complexity of the volume.
Half-angle slicing represents another approach to rendering volumetric shadows (J. Kniss, S. Premoze, C. Hansen, P. Shirley, and A. McPherson in “A Model for Volume Lighting and Modeling,” in IEEE Transactions on Visualization and Computer Graphics 2003, pgs. 150-162). This approach has the advantage of using less memory than the Deep Opacity Mapping technique, but is expensive because it requires multiple geometry passes and render-target switches.
Accordingly, what is needed is a low-cost, memory and computationally efficient technique for rendering volumetric shadows accurately with minimal artifacts.